Intro

The RedHot analysis was completed to compare the health of western redcedar across urban heat islands. Redcedar health data were collected by community scientists in the Western Redcedar Dieback Map project on iNaturalist. Urban heat data were commissioned by three cities in the northwest using methods described in Voelkel and Shandas (2017).

Methods

Data Descriptions

Observations of western redcedar were downloaded from iNaturalist and urban heat data were downloaded from open data portals or provided by contacts in the City of Tacoma, King County (Washington) and Portland. Trees in WA were also evaluated based on EHD Ranks. HOLC data were also investigated for each city.

iNaturalist

  • iNaturalist data were downloaded from the Western Redcedar Dieback Map on 1.13.24:
    • full data (query: quality_grade=any&identifications=any%projects%5B%5D=western-redcedar-dieback-map)
      • Note we needed to specify all fields related to place and all fields related to the project

Urban Heat

  • Urban Heat Island data were obtained for the following locations

Note temperature data is different for each dataset and may have been collected slightly differently. Temperature data will need to be standardized (difference from mean) for each dataset, then temperatures can be compared region wide.

Environmental Health Disparity Data

Environmental Health Disparity Rank Data (Full EHD Rank data (v2)) was downloaded on 6.17.23 from https://geo.wa.gov/datasets/WADOH::full-environmental-health-disparities-version-2-extract/explore

Metadata is available in this technical report: https://doh.wa.gov/sites/default/files/2022-07/311-011-EHD-Map-Tech-Report_0.pdf?uid=634dcf4aec2b5

  • EHD
    • Environmental Exposures
      • “Diesel_PM2”
      • “Ozone_Conc”
      • “PM2_5”
      • “Proximity_”
      • “Toxic_Rele”
    • Environmental Effects
      • “Lead_Risk_”
      • “PTSDFs”
      • “PNPL”
      • “PRMP”
      • “PWDIS”
    • Socioeconomic Factors
      • “LEP”
      • “No_HS_Dipl”
      • “POC”
      • “Poverty”
      • “Transporta”
      • “Unaffordab”
      • “Unemployed”
    • Sensitive Populations
      • “CVD”
      • “LBW”

HOLC Data

Home Owners Loan Corporation Maps were downloaded from the Mapping Inequality Project at the following links + Tacoma + Portland + Seattle

Data Wrangle

City tree data were ‘joined by attribute’ separately so we have 3 different tree datasets to work with or merge.

Also, given the UHI data were extracted with shapefiles, the column names are limited to 10characters. Therefore, exported UHI data only include iNat ID numbers and UHI data. These were then re-merged (see below) with the iNat data to get the remaining columns with proper names.

Import

Prep for QGIS Data Extracts

Filter data to only include necessary columns

[1] “id”
[23] “latitude”
[24] “longitude” [35] “place_town_name”
[36] “place_county_name”

Split Data into Areas

  • Note: Alternative option is to export iNat observations in these locations rather than export all observations than filter to these locations
    • Tacoma (query: quality_grade=any&identifications=any&place_id=186123&projects%5B%5D=western-redcedar-dieback-map)
    • Portland Metro Area (query: quality_grade=any&identifications=any&place_id=122420&projects%5B%5D=western-redcedar-dieback-map)
    • King County (query: quality_grade=any&identifications=any&place_id=1282&projects%5B%5D=western-redcedar-dieback-map)

Export data for QGIS data joins

Tacoma - 357 Trees Portland - 465 Trees King County - 516 Trees

QGIS Methods

  • Import into QGIS
    • Data Source Manager - Delimited Text - Browse to R working directory
Extract Heat Data for Trees
  • QGIS - Extract heat data for each point
    • Add Heat Data
      • Tacoma
        • tac_pm.tif
        • tac_am.tif
        • tac_af.tif
      • King County
        • pm_t_f_ranger.tiff
        • af_t_f_ranger.tiff
        • am_t_f_ranger.tiff
      • Portland
        • 825a_2 (am)
        • 825b_2 (af)
        • 825c_2 (pm)
    • Open processing tools panel and search for ‘sample raster values’
      • (View > Panels > processing tools)
      • Sample raster values for each temperature time series and each area (e.g. )
Extract HOLC Data
  • Add HOLC data to trees layers for each city
    • join attributes by location (Vector > Data Management Tools > Join Attributes By Location)
    • e.g. Join features in Portland Trees that Intersect by comparing to Portland HOLC 1.13.24
    • Advanced settings - do not filter (mark in in both layers) + May get warning: No spatial index exists.. + Right click each layer and click ‘Create Spatial index’ in Source Tab
    • Export temporary data for trees
Extract EHD Rank Data for Trees
  • Add EHD RAnk data downloaded on 6.17.23 from https://geo.wa.gov/datasets/WADOH::full-environmental-health-disparities-version-2-extract/explore
  • Add EHD Data to trees layer
    • join attributes by location (Vector > Data Management Tools > Join Attributes By Location)
    • Advanced settings - do not filter (mark in in both layers)
      • May get warning: No spatial index exists..
        • Right click each layer and click ‘Create Spatial index’ in Source Tab
    • Export temp data for trees

Community Hypothesis Test - Tree Selection

  • Random Tree Selection for Portland Redhot Hypothesis Test.
    • Define Project CRS WGS 84 EPSG:4326
    • Add Portland Urban Heat Data
      • GIS > Urban Heat GIS Data > Portland > a, b,c tiffs
      • Convert UHI Raster to shp files x 3
      • Raster > Conversion > Polygonize > Default Settings (DN_AM for morning temps (825a), DN_AF for afternoon etc.)
      • Export temporary ‘vectorized’ layers to shp files with default crs Create Spatial Index for each layer (avoids warning in below joining steps)
      • Right click each layer and click ‘Create Spatial index’ in Source Tab Extract temp data for trees
    • Add Street Tree Data
    • Join attributs by location
      • Vector > Data Management Tools > Join Attributes by location
      • Trees that intersect with vectorized rasters
      • Advanced settings - do not filter (mark in both layers)
    • Limit trees to “DBH” > 30 and “DBH” < 40? (leaves 160 trees)
    • Randomly select 100 (drops 60 trees)

Export final .shp files as .csv

Re-import Data after following QGIS Methods

Join UHI and iNat Data

Mutate

Note we needed to convert Tacoma temps to F to match king county

Daily Means
Morning Means
Afternoon Means
Evening Means

Merge Data (cities)

Clean

Some of the iNat project questions changed since it was created so some we need to adjust the answers to be more consistent throughout the project.

Reclassify response category variables
Check for outliers in temperature data
Afternoon
## Warning: Removed 36 rows containing missing values (`geom_point()`).

Should we remove these four outliers with less than -8 dist from mean af?

Morning

Evening

Mutate

Convert Percent to Proportion

Filter

Remove Dead Trees
Subset WA Data
Subset KC Data
Subset HOLC Data

Visualization

Distributions

Number of trees

## Warning in geom_histogram(stat = "count"): Ignoring unknown parameters:
## `binwidth`, `bins`, and `pad`

## Warning in geom_histogram(stat = "count"): Ignoring unknown parameters:
## `binwidth`, `bins`, and `pad`

Response Variable

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

The data is likely zero inflated

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

There are some data that need to be cleaned, healthy trees should not have dieback percent of 100.

binomial distributions

Ordinal regression, maybe poisson distribution?

Tree Health Categories

Some cleaning is needed, some healthy observations have dieback and some dead trees have 0% dieback.

Density Plots

Urban Heat

## `geom_smooth()` using formula = 'y ~ x'

## `geom_smooth()` using formula = 'y ~ x'

Environmental Exposures

Note we need to remove some outliers

## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

Data Summaries

Trees per health category

Binary Response (2 categories)

## # A tibble: 2 × 2
## # Groups:   binary.tree.canopy.symptoms [2]
##   binary.tree.canopy.symptoms     n
##   <fct>                       <int>
## 1 Healthy                       815
## 2 Unhealthy                     424

Filtered response (5 categories)

## # A tibble: 4 × 2
## # Groups:   reclassified.tree.canopy.symptoms [4]
##   reclassified.tree.canopy.symptoms     n
##   <fct>                             <int>
## 1 Healthy                             815
## 2 Thinning Canopy                     165
## 3 Dead Top                            111
## 4 Other                               148

Community scientists

## # A tibble: 146 × 2
## # Groups:   user_login [146]
##    user_login           n
##    <chr>            <int>
##  1 abbielisabeth        4
##  2 abbigail_white       5
##  3 abe                  1
##  4 adrienne_stclair     2
##  5 akreiner             6
##  6 alexis_mushroom     57
##  7 alginger             4
##  8 amy_boucher          1
##  9 and_allies           3
## 10 angela_mabel        50
## # ℹ 136 more rows
##   n.participants n.obs
## 1            146  1239
##   n.participants n.obs
## 1             96   785
## # A tibble: 3 × 1
##   Area       
##   <chr>      
## 1 King County
## 2 Portland   
## 3 Tacoma